import fetch from '@system.fetch';
import router from '@system.router';
import qs from 'querystring'; //npm install qs，npm install querystring
import http from '@ohos.net.http';

var timerbar

export default {
    data: {


        // 柱状图数据
        XBar:360,
        YBar:800,
        objBar: {
//            chartZone: [50, 50, 320, 400], // 图表左上角与右下角坐标数组
            chartZone: [50, 50, 320, 400], // 图表左上角与右下角坐标数组
            ytext: '训练时长(min)',
            xtext: '训练开始时间',
            yAxisLable: ['0', '1', '2', '3', '4'], // Y轴内容
//            yAxisLable: [], // Y轴内容
            guideLine: true, // 是否存在辅助线
//            xAxisLable: ["9:30", "12:30", "16:30", "17:30"], // x轴内容
            xAxisLable: [], // x轴内容
//            data: [2, 3, 4, 3.9], // 数据内容
            data: [], // 数据内容
            dataInfoShow: true, // 是否显示数据信息
//            dataInfo: ['2min', '3min', '4min', '3.9min'], // 数据展示内容
            dataInfo: [], // 数据展示内容
            barStyle: {
                width: 40, // 数据条的宽
                color: 'rgb(113,155,7)' // 数据条的颜色
            },
            axisArrow: {
                size: 2, // 箭头因子大小
                color: 'black' // 箭头填充色
            }
        },

        // 折线图数据
        XLine:360,
        YLine:800,
        objLine: {
            chartZone: [50, 50, 320, 400], //图表左上角与右下角坐标数组
            yAxisLable: ['0','1','2','3','4'], //Y轴内容，需要为字符串形式
            xtext: '训练开始时间', // 横纵
            ytext: '反应时长(min)', // 纵纵
            guideLine: true, //是否存在辅助线
            dataPoint: true, //是否存在数据点
//            xAxisLable: ["", "9:30", "12:30", "16:30", "17:30"], //x轴内容
            xAxisLable: ["",], //x轴内容
//            data: [2, 3, 4, 3.9], //数据内容
            data: [], //数据内容
            dataInfoShow: true, // 是否显示数据信息
//            dataInfo: ['2min', '3min', '4min', '3.9min'], //数据内容
            dataInfo: [], //数据内容
//            data2: [3,4,2,1,3,2],
            lineStyle: {
                line_width: 2, // 数据条的宽
                color: '#1abc9c', // 折线的颜色
                radius: 1 // 数据点半径
            },
            axisArrow: {
                size: 2, //箭头因子大小
                color: 'black' //箭头填充色
            },
            dataStyle: {
                radius: 5,
                color: "#ee6587"
            }
        },
    },
    onInit() {


//        console.info('柱状图要展示的信息：' + this.data.objBar.dataInfo)
        timerbar = setInterval(this.DataUpdate, 1000)
        console.info('使用柱状图与折线图数据更新定时器')
    },

    onHide() {
        clearInterval(timerbar)
    },

    DataUpdate() {


        // 每一个httpRequest对应一个http请求任务，不可复用
        let httpRequest = http.createHttp();
        // 用于订阅http响应头，此接口会比request请求先返回。可以根据业务需要订阅此消息
        // 从API 8开始，使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
        httpRequest.on('headersReceive', (header) => {
            console.info('header: ' + JSON.stringify(header));
        });
        httpRequest.request(
            // 填写http请求的url地址，可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
            "http://124.71.225.45/api/manageTrainTime/",
            {
                //                method: http.RequestMethod.POST, // 可选，默认为http.RequestMethod.GET
                method: 'POST', // 可选，默认为http.RequestMethod.GET
                // 开发者根据自身业务需要添加header字段
                header: {
                    'Content-Type': 'application/json'
                },
                // 当使用POST请求时此字段用于传递内容
                extraData: {
                    //                    "data": "data to send",
                    'sendPatientId': "000001",
                },
                connectTimeout: 60000, // 可选，默认为60s
                readTimeout: 60000, // 可选，默认为60s
            }, (err, data) => {
            if (!err) {
                var getresult = JSON.parse(data.result); // 令获取到的数据赋给winfo
                //                console.log("返回的数据：" + resp.data) // 日志中打印出数据
                //                console.log("返回的数据：" + getresult[0]) // 日志中打印出数据
                //                var up_to_standard = Number(getresult[0].up_to_standard) // 转化为Number类型
                //                var not_up_to_standard = Number(getresult[0].not_up_to_standard) // 转化为Number类型

                // 动态更新数据
                //                for(var i = 0; i < getresult[0].length; i++) {
                //                    var bar = 'post_train_begin_time_' + String(i)
                //                    console.info('llllll'+getresult[0].bar)
                //                    this.data.objBar.xAxisLable.push(getresult[0].bar)
                //
                //                    var score = 'post_train_begin_time_score_' + String(i)
                //                    this.data.objBar.data.push(getresult[0].score)
                //                }

                // 柱状图数据更新
                var getbarpost = []

                for (let valuedata in getresult[0]) {
                    //                    this.data.objBar.data.push(getresult[0][valuedata])
                    getbarpost.push(getresult[0][valuedata])
                }
                //                console.info(getbarpost)

                //                this.data.objBar.xAxisLable = getbarpost.splice(0, getbarpost.length/2) // 获取前一半的值
                this.objBar.xAxisLable = getbarpost.splice(0, getbarpost.length/2) // 获取前一半的值
                //                console.info(this.data.objBar.xAxisLable)
                this.objBar.data = getbarpost // 获取剩余的值
                //                console.info(this.data.objBar.data)

                //                console.info(this.data.objBar.dataInfo)
                this.objBar.dataInfo = []
                for (let l in this.objBar.data) {
                    this.objBar.dataInfo.push(this.objBar.data[l] + 'min')
                }
                //                console.info(this.data.objBar.dataInfo)

                // 折线图数据更新
                var getlinepost = []

                //                for (let valuedata in getresult[1]) {
                //                    //                    this.data.objBar.data.push(getresult[0][valuedata])
                //                    getlinepost.push(getresult[1][valuedata])
                //                }
                //                console.info(getlinepost)
                for (let valuedata in getresult[0]) {
                    //                    this.data.objBar.data.push(getresult[0][valuedata])
                    getlinepost.push(getresult[0][valuedata])
                }
                //                console.info(getlinepost)

                this.objLine.xAxisLable = ["",]
                console.info(this.objLine.xAxisLable.length)
                var getxAxisLable = getlinepost.splice(0, getlinepost.length/2) // 获取前一半的值
                //                console.info("接收到的x轴信息："+getxAxisLable)
                this.objLine.xAxisLable.push.apply(this.objLine.xAxisLable, getxAxisLable)
                //                console.info(getxAxisLable.length)
                //                console.info(this.data.objLine.xAxisLable.length)
                //                console.info(this.data.objLine.xAxisLable)
                //                this.data.objLine.data = getlinepost // 获取剩余的值
                //                console.info(this.data.objLine.data)
                //                console.info(this.data.objLine.dataInfo)

                var getlinepostdata = []
                for (let valuedata in getresult[1]) {
                    //                    this.data.objBar.data.push(getresult[0][valuedata])
                    getlinepostdata.push(getresult[1][valuedata])
                }

                this.objLine.data = getlinepostdata

                this.objLine.dataInfo = []
                for (let l in this.objLine.data) {
                    this.objLine.dataInfo.push(this.objLine.data[l] + 'min')
                }
                //                console.info(this.data.objLine.dataInfo)
            } else {
                //                this.winfo = resp.data;
                console.log("获取数据失败！")

                // 当该请求使用完毕时，调用destroy方法主动销毁。
                httpRequest.destroy();
            }
        });
    },

    ToManage() {
        router.back()
    }
}
